{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "59ccbd2a-2a12-4307-bc53-e0f543bc074f",
   "metadata": {},
   "source": [
    "Chapter 17\n",
    "\n",
    "# 割线法\n",
    "Book_3《数学要素》 | 鸢尾花书：从加减乘除到机器学习 (第二版)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6edd8b3d-661d-4fea-8c1f-65a55733f19a",
   "metadata": {},
   "source": [
    "这段代码实现了**割线法**求解非线性方程的根，并通过可视化展示了割线法的迭代过程和收敛性。以下从数学角度详细描述每部分代码的功能及其背后的数学原理。\n",
    "\n",
    "---\n",
    "\n",
    "### 代码描述及数学分析\n",
    "\n",
    "#### 1. **目标函数定义**\n",
    "目标函数被定义为：\n",
    "$$\n",
    "f(x) = 2x^2 - 8x + 1\n",
    "$$\n",
    "这是一个二次多项式，其根可以通过求解 $f(x) = 0$ 得到。通过 `sympy` 定义符号表达式，并使用 `lambdify` 转换为可执行的 Python 函数，以支持后续数值计算。\n",
    "\n",
    "#### 2. **割线法求根**\n",
    "割线法是一种基于线性插值的迭代方法，用于数值求解非线性方程的根。它的基本思想是通过两个初始点 $(x_0, f(x_0))$ 和 $(x_1, f(x_1))$ 构造割线，割线与 $x$ 轴的交点作为下一次迭代的点。其迭代公式为：\n",
    "$$\n",
    "x_{n+1} = x_n - f(x_n) \\cdot \\frac{x_n - x_{n-1}}{f(x_n) - f(x_{n-1})}\n",
    "$$\n",
    "此公式的推导基于线性插值，割线方程为：\n",
    "$$\n",
    "y = \\frac{f(x_n) - f(x_{n-1})}{x_n - x_{n-1}} (x - x_n) + f(x_n)\n",
    "$$\n",
    "令 $y=0$，解得：\n",
    "$$\n",
    "x = x_n - f(x_n) \\cdot \\frac{x_n - x_{n-1}}{f(x_n) - f(x_{n-1})}\n",
    "$$\n",
    "\n",
    "#### 3. **迭代终止条件**\n",
    "割线法在以下两种情况下停止：\n",
    "1. 当前迭代值 $x_{n+1}$ 与前一次迭代值 $x_n$ 的差值小于给定容差 $tol$：\n",
    "   $$\n",
    "   |x_{n+1} - x_n| < tol\n",
    "   $$\n",
    "2. 达到最大迭代次数 $max\\_iter$。\n",
    "\n",
    "#### 4. **割线法的实现**\n",
    "在代码中，`secant_method` 函数完成割线法的实现：\n",
    "- 初始点 $x_0$ 和 $x_1$ 由用户指定。\n",
    "- 计算割线的斜率 $\\frac{f(x_n) - f(x_{n-1})}{x_n - x_{n-1}}$，并利用迭代公式更新 $x_{n+1}$。\n",
    "- 检查收敛条件 $|x_{n+1} - x_n| < tol$，若满足则返回近似根、迭代次数和所有迭代点。\n",
    "\n",
    "特殊情况下，若 $f(x_n) \\approx f(x_{n-1})$，斜率接近零会导致除零错误，这时算法中止。\n",
    "\n",
    "#### 5. **割线法的可视化**\n",
    "函数 `visualize_secant` 使用 `matplotlib` 可视化割线法的迭代过程，展示几何上的根逼近过程：\n",
    "1. 绘制目标函数 $f(x)$ 曲线和横轴 $y=0$。\n",
    "2. 每次迭代绘制割线：\n",
    "   - 割线连接 $(x_n, f(x_n))$ 和 $(x_{n-1}, f(x_{n-1}))$；\n",
    "   - 割线与横轴交点标记为新的迭代点。\n",
    "3. 可视化每次迭代的点 $(x_n, f(x_n))$ 及其对应的函数值。\n",
    "\n",
    "#### 6. **收敛性可视化**\n",
    "函数 `visualize_convergence` 绘制迭代点 $x_n$ 随迭代次数的变化图：\n",
    "- 横轴为迭代次数；\n",
    "- 纵轴为迭代点 $x_n$；\n",
    "- 图形显示了割线法的收敛轨迹。\n",
    "\n",
    "#### 7. **测试部分**\n",
    "选择初始点 $x_0 = -3$ 和 $x_1 = -2$，调用 `secant_method`：\n",
    "- 若 $f(x_0)$ 和 $f(x_1)$ 的差值过小，算法中止；\n",
    "- 返回最终求得的根、迭代次数以及所有迭代点；\n",
    "- 使用可视化函数展示割线法的迭代过程和收敛性。\n",
    "\n",
    "---\n",
    "\n",
    "### 数学背景总结\n",
    "\n",
    "#### 优势与收敛性\n",
    "1. **割线法的效率**：\n",
    "   割线法相比于牛顿法，不需要计算导数 $f'(x)$，是一种无导数优化方法，特别适用于目标函数复杂且导数难以计算的场景。\n",
    "   \n",
    "2. **收敛速度**：\n",
    "   割线法的收敛速度为超线性（约 $1.618$，即黄金分割率），介于线性和二次收敛之间。相比牛顿法（具有二次收敛性），割线法对初始点的要求较低。\n",
    "\n",
    "#### 几何直观\n",
    "割线法的几何意义是使用割线代替切线，逐步逼近目标根。从初始点开始，割线的斜率决定了更新步长，随着迭代的进行，割线的端点逐步收敛到根的位置。\n",
    "\n",
    "通过该代码的实现和可视化展示，可以清晰理解割线法的工作原理及其几何直观性，是非线性方程数值求解的经典案例。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "31e63bc3-6acb-4f6d-a5fb-891b9c0de626",
   "metadata": {},
   "source": [
    "## 导入包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "4943d65d-9dab-4f5c-9ab4-84f62efe4913",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sympy import symbols, lambdify"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "df55dea3-4db1-4fbf-8fa6-1a496aa598a2",
   "metadata": {},
   "outputs": [],
   "source": [
    "p = plt.rcParams  # 获取默认绘图参数\n",
    "p[\"font.sans-serif\"] = [\"Roboto\"]  # 设置无衬线字体为 Roboto\n",
    "p[\"font.weight\"] = \"light\"  # 设置字体粗细为 light\n",
    "p[\"ytick.minor.visible\"] = True  # 显示 y 轴的小刻度\n",
    "p[\"xtick.minor.visible\"] = True  # 显示 x 轴的小刻度\n",
    "p[\"axes.grid\"] = True  # 启用坐标轴网格\n",
    "p[\"grid.color\"] = \"0.5\"  # 设置网格颜色为灰色\n",
    "p[\"grid.linewidth\"] = 0.5  # 设置网格线宽度"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4953a234-56f0-4c0c-bf38-7d5af2529b68",
   "metadata": {},
   "source": [
    "## 使用 sympy 定义目标函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "9f1285ae-5d82-42ab-a922-9a0bce035df6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2 x^{2} - 8 x + 1$"
      ],
      "text/plain": [
       "2*x**2 - 8*x + 1"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = symbols('x')\n",
    "func = 2*x**2 - 8*x + 1\n",
    "func"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "4b40d58b-6a19-4103-8cda-3205d3dc5531",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将函数转换为可执行的 Python 函数\n",
    "f = lambdify(x, func, 'numpy')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d876b83f-e8b1-4b29-8619-462f251d7a81",
   "metadata": {},
   "source": [
    "## 割线法求根函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "91d0effa-808d-43e6-84b0-10af73853e44",
   "metadata": {},
   "outputs": [],
   "source": [
    "def secant_method(f, x0, x1, tol=1e-6, max_iter=100):\n",
    "    iter_count = 0\n",
    "    x_vals = [x0, x1]  # 记录迭代点以便可视化\n",
    "\n",
    "    while iter_count < max_iter:\n",
    "        f_x0 = f(x0)\n",
    "        f_x1 = f(x1)\n",
    "\n",
    "        if abs(f_x1 - f_x0) < 1e-10:  # 避免除零\n",
    "            raise ValueError(\"两点的函数值非常接近，割线法可能无法收敛。\")\n",
    "\n",
    "        # 割线法迭代公式\n",
    "        x2 = x1 - f_x1 * (x1 - x0) / (f_x1 - f_x0)\n",
    "        x_vals.append(x2)\n",
    "\n",
    "        if abs(x2 - x1) < tol:  # 收敛条件\n",
    "            return x2, iter_count + 1, x_vals\n",
    "\n",
    "        # 更新点\n",
    "        x0, x1 = x1, x2\n",
    "        iter_count += 1\n",
    "\n",
    "    raise ValueError(\"迭代未能在最大步数内收敛。\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e0163112-1857-4578-a914-b6af652dc6fa",
   "metadata": {},
   "source": [
    "## 可视化割线法过程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "54d56515-e4ae-4275-998d-791709beac24",
   "metadata": {},
   "outputs": [],
   "source": [
    "def visualize_secant(f, x_vals):\n",
    "    x = np.linspace(-3, 3, 500)\n",
    "    y = f(x)\n",
    "\n",
    "    plt.figure(figsize=(6, 6))\n",
    "    plt.plot(x, y, color=\"blue\")\n",
    "    plt.axhline(0, color=\"black\", linewidth=0.8, linestyle=\"--\")\n",
    "\n",
    "    # 绘制割线法迭代过程\n",
    "    for i in range(len(x_vals) - 2):\n",
    "        x0 = x_vals[i]\n",
    "        x1 = x_vals[i + 1]\n",
    "        x2 = x_vals[i + 2]\n",
    "\n",
    "        # 绘制割线\n",
    "        plt.plot([x0, x1], [f(x0), f(x1)], color=\"k\", linestyle=\"-\", lw = '0.2')\n",
    "        plt.plot([x1, x2], [f(x1), 0], color=\"k\", linestyle=\"-\", lw = '0.2')\n",
    "        \n",
    "        # 绘制割线和横轴的交点\n",
    "        plt.scatter(x2, 0, color=\"purple\", marker = 'x')\n",
    "        \n",
    "        # 绘制交点的竖直线到函数曲线\n",
    "        plt.plot([x2, x2], [0, f(x2)], color=\"orange\", linestyle=\"--\")\n",
    "\n",
    "        # 标记点\n",
    "        plt.scatter([x0, x1], [f(x0), f(x1)], color=\"red\", marker = 'x')\n",
    "        plt.scatter(x2, f(x2), color=\"purple\", marker = 'x')\n",
    "\n",
    "    plt.title(\"Secant Method Visualization\")\n",
    "    plt.xlabel(\"x\")\n",
    "    plt.ylabel(\"f(x)\")\n",
    "    # plt.legend()\n",
    "    plt.grid(True)\n",
    "    plt.xlim(-3,3)\n",
    "    # plt.savefig('数值求根_割线法.svg')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "f52769ab-01d4-4533-badf-76c0db3262e1",
   "metadata": {},
   "outputs": [],
   "source": [
    "def visualize_convergence(x_vals):\n",
    "\n",
    "    plt.figure(figsize=(6, 3))\n",
    "    plt.plot(np.arange(len(x_vals)),x_vals, marker = 'x')\n",
    "    plt.xlim(0,len(x_vals) - 1)\n",
    "    plt.xlabel('Iteration')\n",
    "    plt.ylabel('Approximated root')\n",
    "    # plt.savefig('数值求根_割线法_收敛.svg')\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1bf98d68-a917-4fc9-aa42-c04b3d9c9247",
   "metadata": {},
   "source": [
    "## 测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "38162dc1-156a-4894-bb5e-c6b3142638a0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "求得根的近似值: 0.12917130661295306\n",
      "迭代次数: 7\n"
     ]
    },
    {
     "data": {
      "image/png": "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xOjRo4dhGIYxd+5cAzDmz5+ftT49Pd0IDw83BgwYYBiGYRw8eDArZBiGYaSlpWW9b+vWrYZhXAkDP/30U9Z2J0+eNAAjOjo6a1n//v2NypUrX/ezZe7rwIEDRq9evYy6devarW/RooXRpUsX48yZM3bBIiEhwShWrJjx8MMP221/3333GREREVmvR40addWXfP/+/Y2AgADjyJEjWcu+++47AzB27dqV9T4PDw9j3759WdukpKQYNWrUMFq3bm0YhmHExsYaPj4+xrBhw+z2HxUVdcNgMWHCBLtzahiGccstt9iFCMO4Olj4+/sbzz77bNbrtLQ0o2fPnsYXX3xhGEbOg8Xq1auNU6dOGYZhBs7U1FSjXLlyxtChQ7N9T3av/+7jjz82AGPmzJlZy7Zt22bs2LHDrtYXX3zRCAoKsnvvP0PEP5cdOHDAsNlsxmuvvWa3zahRowybzZb1M8rJz1Ukp3QrRFxaQEAA33//Pb/99huPP/44a9asoVevXtx6660cOXIEgEWLFpGRkcF9991HWlpa1tSyZUs2btwImJevvb296dq1a9a+3dzcWLx4MW+88QZgXu5OTk6mc+fOlC5dGg8PD3r06AFw1W2KBg0aZM2XLVsWgNjY2Dx9xqSkJJ544gl27NjBhg0bALNB57p163jiiSdITk62237dunVcvHgx28+7a9cuEhISrnu8UqVKERoaes36Fy1aRPPmzalRo0bWNp6enjz00EOsXbuWxMREduzYQVJSEnfffbfdvoODg2/4ee+99158fX2zbods376d3bt3290GyU67du345ptv+PDDD9m9ezfu7u788ssvPPHEEzc8ZiZfX1+qV6/OG2+8QdWqVfHy8sLT05OTJ09e9TPOiW3btvHiiy/y+OOP07t376zldevWZf369TRq1IhixYrh4eHBmDFjiIuLy9X+Fy9ebNegNdOAAQMwDIOlS5dmLbvRz1UkpxQspEho2LAhH374IUeOHOHnn3/m0KFD9OnTBzDbAwDUqVMHT0/PrOm///0vZ8+eBeDs2bOULl36qqckKlSokPU/44ULF9KpUye8vb0ZP348GzZs4PPPP89xjUY27SByIiUlhW7dulG5cuWsdhLjx4+nXLly3HHHHaSmptptn/l5e/bsafd5hw4dCsC5c+fyVEdm/bGxsVSsWPGq9eXKlSMjI4Pz589n1ZD55ZUbgYGB3HHHHUyfPh2AadOm4evra/fFnJ0ZM2YwbNgwxo8fT3h4OKGhoYwePZr09PQcH/vy5cu0bt2a2bNn8+KLL7J06VI2bdqUp4aiCQkJPPDAA1SvXv2qx0NHjhzJk08+SZs2bZg5cyYbN27M05MemaHgnz+PcuXKAXDmzJkb7iOvv5dSdOmpEHFZO3bsYMqUKQwbNizrf6Q2m41evXrxwgsvMGLECM6ePUuxYsUAWLZsWdb8P5UsWZLY2FgMw7jmI5gTJkygUqVKzJo1C3d3dwC7xqH5xTAM3NzceOyxxxg9ejTvvPMOkyZN4sknn8TT0/OqL4bMzzh58mRq1ap11f7y8mX/dyVLluTUqVNXLT9x4gQ2m41SpUplfRGfOXMmT08x9OvXj+nTp7NhwwamT59Or169CAwMvO57/Pz8GDlyJCNHjuT48eNMmjSJV155hdTUVF599dUcPVq7bNky9u/fz5IlS+jYsWPWci8vr1x/hqioKA4fPszGjRvx8/OzWzd+/Hgeeughu8CRl75XSpYsCcCpU6eoVKlS1vLMRrI5uUIkklu6YiEuK7MzpX8+QQDmrQl3d3e8vb1p27YtYHawdOutt2ZNNWvWzPribd26NcnJyVc9BdKtWzceffRRwGzJ7+/vnxUqwAw3eeHm5parv6QBHn30UVJSUrj//vs5f/78Nf/Cbd68OZ6enuzfv9/u89arV4/KlStnfUlmPoab2zo6derE2rVrOXz4cNay9PR0pk+fTsuWLbOeuvH19bV7KgPI8WOxXbt2pUyZMvzrX//Kekrjev744w9q166d9eVcsWJFXnrpJerVq8emTZuAK3/FHz9+POt9SUlJXLx40e5zAHYh5q+//srRX/5/N2XKFL755hvef/996tate9X69PT0q4JSdr9LNpvtuj+fjh07YrPZmDJlylXHz1wv4mi6YiEuq06dOgwaNIjhw4dz6NAhOnTogJeXF2vWrOHDDz/k0UcfJSAggAYNGtCvXz+eeuopDh48SIsWLTh16hRvvvkmLVu25KuvvqJHjx40b96cvn37Zt1fnzp1KkuXLmX58uUA3HnnnfTv35/nn3+eLl26sGrVKsaMGQNg9+WUE5UqVeLYsWN89dVXNG7cmPr169/wPeXLl+f222/np59+okuXLlStWjXb7cqUKcNLL73Em2++yYULF+jSpQsXL17k/fffx9/fn2XLlmXVADBmzBjat29Ps2bNclT7c889x6RJk+jYsSOjRo2iWLFijBs3joMHD2Z1SlayZEmioqL48MMP8fHxoWXLlqxevTrrVs6NeHh40KdPHz7++GPKli1Lly5drrt9WFgYAQEBPPXUU7z++utUqlSJlStX8vvvv2cFw+rVq1OtWjXefPNNihUrRkZGBp988ondraFWrVoRHBxMVFQUr776KufOnePNN98kISEhxz/j/fv389RTTxEREUH9+vXtOjcrW7YsYWFh3HnnnUycOJE6depQpUoVJk6cyI8//giYv0uZV50qVarE7Nmzady4Me3btycoKMjuWDVr1mTQoEG8+uqrXL58mebNm7Nu3Treeecdnn76abt2MCIOY127UZH8l5GRYXz77bdGy5YtjWLFihmBgYFGw4YNjXHjxhlpaWlZ26WlpRlvvfWWUa1aNcPT09MICQkx/vWvfxmXLl3K2ub8+fPGk08+aZQuXdrw9vY2mjVrZixZssTueO+9955RuXJlw9vb22jdurXx/fffG7Vq1TLGjRtnGMaVJzkOHjxo9z7+0br/xIkTRtOmTQ1fX1/jrbfeyvazZe7r709HLFiwwACM77//PmvZwYMHr3rc1DAM47PPPjPCw8MNT09Po0yZMsZjjz1mxMbGZq1PSEgwunbtavj6+hpPPPGEYRjZP62S3dMUhw8fNu6//34jKCjI8Pf3N9q3b2+sXbvW7n0pKSnGsGHDjBIlShh+fn7G7bffbrz00ks3fCok0+bNmw3A7kmPv/vnUyGxsbHGo48+apQtW9bw9vY2ateubXz44Yd279myZYvRrFkzw8/PzwgLCzPeeecdo06dOnZPdGzcuNFo0aKF4evra1SuXNn44IMPjAcffNDo3Llz1jbXeyok8+eW3ZS5TXx8vPH4448bwcHBRrFixYwHHnjAGDt2rFGrVi1j8+bNWfudMWOGUbZsWaN48eJZjwT/83cpPT3dGD16tFG1alXDy8vLqFGjhvHee+8Z6enpWdvk9OcqkhM2w1DLHBEREXEMtbEQERERh1GwEBEREYdRsBARERGHUbAQERERh1GwEBEREYdRsBARERGHcekOsjIyMjhx4gTFihXLUXe9IiIiYjIMg4sXL1KhQoWsnnhzwqWDxYkTJ+xG6xMREZHcOXr0KCEhITne3qWD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2LSpLZ98ssrqckREpAhxyWARHR1NeHg4kZGRVpdiierV4emnAWxMnlyK06fPWF2SiIgUES4ZLKKiooiJiWHTpk1Wl2KZf/8bAgPhzz9b8vbba6wuR0REigiXDBYCwcEwYgSAje++K8uhQyetLklERIoABQsXNnQohITAqVPNePXVDVaXIyIiRYCChQvz9YW33waw8cMPFdm+/bjVJYmIiItTsHBxDz0Et94KiYmRDB++2epyRETExSlYuDg3N/jwQ3N+0aJKLF582NqCRETEpSlYFAGtW8M994BhNGT48K1WlyMiIi5MwaKIePdds9OsrVur89VX+60uR0REXJSCRRFRvTo88wxAXV57bSdpaVZXJCIirkjBogj597+hVCk4erQmb731h9XliIiIC1KwKEKKF4fXXgO4hf/+dzdxcdbWIyIirkfBooh58kmoVQvi4yN47rldVpcjIiIuRsGiiPH0hPffBwjj22//5OBBqysSERFXomBRBPXoAR07QlpaPQYN2m51OSIi4kIULIogmw0++ABstqosWnSQ9eutrkhERFyFgkURVb8+PPIIQCOeeGILhmF1RSIi4gpcMlhER0cTHh5OZGSk1aU4tTffBH//SuzceZTp062uRkREXIFLBouoqChiYmLYtGmT1aU4tfLlYcQIgKYMG/Yrly9bXZGIiBR2LhksJOeeew5CQ8tz6tRJPvxQ90NEROTmKFgUcb6+8M7zZ4DmvPXWeo4f/8cGmzbBkSNWlCYiIoWQgkVRd+QIfV6uSgv+JCnpNC+99LerFr/+Ci1aQESEwoWIiOSIgkVRd+oUtuQkPuYZoBWTJ69m375SZqho1QrS0iApCU6dsrpSEREpBBQsirrISFizhls9tvMIs4DzTBwfTkbL1mao8PCANWvM7URERG5AwUKgaVNYs4b/uI8igEYcPL6Kb9MfvBIqmja1ukIRESkkFCzE1LQp5aJHMoqPgT28wPPEv/eFQoWIiOSKgoWYfv0VBg/mGT6htH8/zvAdbz17xlwuIiKSQwoWYtdQ08vDoP8924BafEAd9rUcoHAhIiI5pmBR1G3adOXpj/9vU9GwaxqdIzuSwR6eTn/eXK9eTEVEJAcULIq6smXBx8euoabNBp98WwE3txoswY/57t3N7URERG5AwaKoq1QJdu2CdevsGmrWrg1RUV0Ab54oOZDU8pWs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6P0uHSzmz5/PqVOnrlquy2A5M3HiRB588MFsL1uL5JWXlxfx8fF2yzIyMnLcMEwkt2bPnk379u3VAD2Hdu3ale2TMzn97nTpYNGhQwemTp1qtyw2NhY/Pz+LKio8li9fTnh4OGXKlLG6FHFBnp6eXLx4Mev1nDlz1GmR5Ivff/8dDw8PateubXUphUbdunVZunSp3VWLpKQk0tPTc/R+l29jsWfPHhYsWICPjw+enp54eHjw8MMP69Gt6zh//jxPPPEEXbt2tVterlw5PVGTQ7oHfn2pqal8/vnn+Pj4kJqaSsWKFenVq5fVZRUa+v3KGcMwuPvuu+nRo4fdcn9/f/r06WNRVYXDiRMnmD59Oj4+Pnh7e5OWlkb//v1zdNXC5YOFiIiIFByXvhUiIiIiBUvBQkRERBxGwUJEREQcRsFCREREHEbBQkRERBxGwUJEREQcRsFCREREHEbBQkRERBxGwUJEREQcRsFCREREHEbBQkRERBxGwUJECtT06dPx9fXlyJEjAKxevRp3d3c2b95scWUi4ggahExEClynTp0oV64c3377LZGRkTRp0oTPPvvM6rJExAE8rC5ARIqe6Oho6tevT4kSJTh69ChLliyxuiQRcRAFCxEpcLVq1eK5555j9OjRfPnll5QoUcLqkkTEQdTGQkQsceHCBQDi4uKsLUREHErBQkQK3ObNm/nyyy95//33GTVqFCdOnLC6JBFxEDXeFJEClZGRQdOmTWnSpAnR0dF069aNoKAgpk+fbnVpIuIAamMhIgXq888/Z9++fcyfPx+A999/nwYNGrB48WI6d+5scXUicrN0xUJEREQcRm0sRERExGEULERERMRhFCxERETEYRQsRERExGEULERERMRhFCxERETEYRQsRERExGEULERERMRhFCxERETEYRQsRERExGEULERERMRh/g+kAVObcFLiNwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 600x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 600x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "try:\n",
    "    root, iterations, x_vals = secant_method(f, x0=-3, x1=-2)\n",
    "    print(f\"求得根的近似值: {root}\")\n",
    "    print(f\"迭代次数: {iterations}\")\n",
    "\n",
    "    # 可视化\n",
    "    visualize_secant(f, x_vals)\n",
    "    visualize_convergence(x_vals)\n",
    "\n",
    "except ValueError as e:\n",
    "    print(e)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
